package com.yanggu.scala.chapater11.map

//高阶函数
object HighOrderFunDemo01 {

  def main(args: Array[String]): Unit = {
    //在scala中可以将一个函数当做变量传递到方法中。
    //如果一个函数可以接收一个变量。那么这个函数就是高阶函数
    //可以使用函数名 _的方式传递给变量。但是不执行该函数
    val unit = myPrint _
    unit()

    println("*********使用自定义的高阶函数*********")
    println(test(sum2, 2.4, 3.6))
  }

  def myPrint() = {
    println("Hello, World")
  }

  /**
   * 说明。高阶函数在定义的时候，形参中定义函数时，需要定义输入和输出的数据类型。
   * 方式: 方法名: (参数1数据类型, 参数2数据类型...) => 返回值数据类型
   *
   * @param f
   * @param n1
   * @return
   */
  def test(f: (Double, Double) => Double, n1: Double, n2: Double) = {
    f(n1, n2)
  }

  def sum2(d1: Double, d2: Double) = d1 + d2
}
